package com.ck.chuangke.service;

import com.ck.exception.ServiceException;
import com.ck.model.chuangke.vo.CkCompanySelectListVO;
import com.ck.model.chuangke.vo.CkDeviceCodeListExportVO;
import com.ck.model.common.Company;
import com.ck.model.common.User;
import com.ck.model.common.page.PageInfo;
import com.ck.model.chuangke.vo.CkCompanyListVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.rmi.ServerException;
import java.util.List;
import java.util.Map;

/**
 * @ClassName CkCompanyService
 * @Description 创客后台-商家Service
 * @Author HanQinrui
 * @Date 2018/6/21 11:22
 * @Version 1.0
 **/
public interface CkCompanyService {
    /**
     * 获取商家总数
     * @return
     */
    Long getCompanyCount();

    /**
     * 商家列表分页查询
     * @param companyName 商家名称
     * @param mobilePhone 手机号码
     * @param pageNum 当前页
     * @param pageSize 每页条数
     * @return
     */
    PageInfo<CkCompanyListVO> listByPage(String companyName, String mobilePhone, Integer pageNum, Integer pageSize);

    /**
     * 导出商家列表
     * @param companyName
     * @param mobilePhone
     * @return
     */
    List<CkCompanyListVO> listExportCompany(String companyName, String mobilePhone);

    /**
     * 通过商家id查询商家详细信息
     * @param companyId 商家id
     * @return
     */
    Company getCompanyInfoById(String companyId);

    /**
     * 修改商家详细信息
     * @param company 商家信息
     * @param request
     */
    void updateCompany(Company company, HttpServletRequest request);

    /**
     * 新增商家
     * @param company 商家信息
     * @param excelDeviceCode 机器码(之间用逗号隔开)
     * @param request
     */
    void addCompany(Company company, String excelDeviceCode, HttpServletRequest request) throws ServerException, ServiceException;

    /**
     * 通过商家名称获取商家条数
     * @param companyName 商家名称
     * @return
     */
    Company getCompanyCountByCompanyName(String companyName);

    /**
     * 商家下拉列表
     * @return List<CkCompanySelectListVO>
     */
    List<CkCompanySelectListVO> listSelect();

    /**
     * 通过商家代码查找对应的超级管理员信息
     * @param companyCode 商家代码
     * @return
     */
    User getAdminUserByCompanyCode(String companyCode);

    /**
     * @Description 商家管理上传图片
     * @param files
     * @param request
     * @return Map<String,Object>
     * @Date 2018/7/24 18:05
     * @Author hanqr
     **/
    Map<String,Object> savePicture(MultipartFile files, HttpServletRequest request) throws IOException;

    /**
     * 通过商家代码查询商家信息
     * @param companyCode 商家代码
     * @return com.ck.model.common.Company 商家信息
     * @Date 2018/7/25 15:34
     * @Author hanqr
     **/
    Company getCompanyInfoByCompanyCode(String companyCode);

    /**
     * 修改商家关联的机器码
     * @param companyCode 商家代码
     * @param deviceCode 机器码(用逗号隔开)
     * @param request
     */
    void updateDeviceCode(String companyCode, String deviceCode, HttpServletRequest request) throws ServiceException;

    /**
     * 查询所有已绑定商家的终端机器码列表
     * hanqr 2018-08-15
     * @return
     */
    List<String> getCompanyDeviceCodeList();

    /**
     * 根据商家代码查询机器码List
     * @param companyCode 商家代码
     * @return
     */
    List<CkDeviceCodeListExportVO> getDeviceCodeListByCompanyCode(String companyCode);
}
